#define DEBUG
#include <cstdio>

using namespace std;

typedef long long ll;

const int maxn=1500, maxk=100000, mods=1000000007;

ll qpower(ll a, int n) {
  if (!n) {
    return 1;
  }
  ll s=1;
  for (; n>1; n>>=1) {
    if (n&1) {
      s = s*a%mods;
    }
    a = a*a%mods;
  }
  return a*s%mods;
}

ll fact[maxk+1], unfact[maxk+1];

void initFact(int n) {
  fact[0] = 1;
  for (int i=1; i<=n; i++) {
    fact[i] = fact[i-1]*i%mods;
  }
  unfact[n] = qpower(fact[n], mods-2);
  for (int i=n; i>0; i--) {
    unfact[i-1] = unfact[i]*i%mods;
  }
}

ll C(int n, int m) {
  return fact[n]*unfact[m]%mods*unfact[n-m]%mods;
}

int main() {
  freopen("camp.in", "r", stdin);
  freopen("camp.out", "w", stdout);

  initFact(maxk);

  static ll p[maxn+1];
  int n, m, a, b, k;
  scanf("%d %d %d %d %d", &n, &m, &a, &b, &k);
  if (2*k<m) {
    printf("1");
    return 0;
  }

  static ll s[2], pre[2][maxn+1], suf[2][maxn+1], sp[maxn+1], spp[maxn+1];
  ll t=(ll)a*qpower(b, mods-2)%mods, ut=(1+mods-t)%mods;
  for (int i=0; i<=m; i++) {
    if (i<=k) {
      p[i] = C(k, i)*qpower(t, i)%mods*qpower(ut, k-i)%mods;
    }
    sp[i] = ((i>0 ? sp[i-1] : 0)+p[i])%mods;
  }

  s[0]=pre[0][m]=suf[0][1] = 1;
  for (int i=1; i<=n; i++) {
    int ni=i&1;
    for (int j=1; j<=m; j++) {
      spp[j] = (spp[j-1]+p[j]*pre[!ni][j]%mods)%mods;
    }
    for (int j=1; j<=m; j++) {
      pre[ni][j] = (pre[ni][j-1]+
		    p[m-j]*(((sp[j-1]*s[!ni]%mods+mods-sp[j-1]*suf[!ni][j+1]%mods)%mods+mods-spp[j-1])%mods)%mods)%mods;
      suf[ni][m-j+1] = pre[ni][j];
    }
    s[ni] = pre[ni][m];
  }

  printf("%lld", s[n&1]);

  fclose(stdin);
  fclose(stdout);
  return 0;
}
